home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / COMMUNIC / 0132.ZIP / ASYN-PGM.BAS < prev    next >
BASIC Source File  |  1982-04-04  |  4KB  |  94 lines

  1. 50 REM * PUBLIC DOMAIN SOFTWARE*
  2. 60 REM THIS COMMUNICATIONS PROGRAM IS ADAPTED FROM AN EXAMPLE IN THE
  3. 70 REM IBM BASIC MANUAL pp F-4,F-5. IT CAN BE USED TO DOWNLOAD PROGRAMS.
  4. 100 'COM3.BAS VER 1.7 C.W. BRANDON 01/27/1982
  5. 105 'Adapter from example pgm in IBM BASIC Manual pp F-4
  6. 120 'set screen to monochrome and width to 80
  7. 130 SCREEN 0,0: WIDTH 80
  8. 140 'turn off SOFT KEY disply, CLS and CLOSE any OPEN files
  9. 150 KEY OFF: CLS: CLOSE
  10. 155 FOR I= 1 TO 10:KEY I,"":NEXT I
  11. 160 'Define all numeric variables as integer for speed
  12. 170 DEFINT A-Z
  13. 180 'define true and false
  14. 190 FALSE = 0: TRUE = NOT FALSE
  15. 191 ON ERROR GOTO 9000
  16. 195 ECH$="N"  'set for full duplex mode
  17. 196 GOSUB 12000
  18. 200 'open comm to file #1 as 300 baud,even parity 7 bit, 1 stop
  19. 210 OPEN "COM1:300,E,7,1" AS #1
  20. 215 'open file 3 for disk output
  21. 216 OPEN "O",#3,"OUTFILE.TXT"
  22. 220 'open screen as file 2
  23. 230 OPEN "SCRN:" FOR OUTPUT AS #2
  24. 235 PRINT "Ready to operate"
  25. 240 'turn on cursor
  26. 250 LOCATE,,1
  27. 260 DISK = FALSE
  28. 280 'get keyboard input and examine it
  29. 290 B$ = INKEY$:IF B$ = "" THEN GOTO 310
  30. 293 IF LEN(B$) > 1 THEN GOTO 11000 ELSE IF B$ = CHR$(8) THEN LOCATE ,POS(0)-1,1:PRINT " ";:LOCATE ,POS(0)-1,1
  31. 295 PRINT #1,B$;:IF ECH$="Y" OR ECH$="y" THEN PRINT #2,B$;
  32. 300 'if no chars in comm buffer, check key in
  33. 310 IF EOF(1) THEN 290
  34. 320 'read contents of comm buffer
  35. 330 A$ = INPUT$(LOC(1),#1)
  36. 340 'edit the input buffer
  37. 350 FOR I = 1 TO LEN(A$)
  38. 353 NCHAR = ASC(MID$(A$,I,1))
  39. 355  IF (NCHAR<31 AND NCHAR<>13 AND NCHAR<>10) OR NCHAR=127 THEN GOTO 370
  40. 357  IF DISK = TRUE THEN PRINT #3,CHR$(NCHAR);
  41. 360  IF NCHAR = 10 THEN NCHAR = 32
  42. 365 PRINT CHR$(NCHAR);
  43. 370 NEXT I
  44. 380 'check for more input
  45. 395 IF LOC(1) > 0 THEN GOTO 330
  46. 400 'if not check for keyboard input again
  47. 410 GOTO 290
  48. 9000 'error handling routine
  49. 9020 IF ERR = 68 THEN LOCATE 1,1,1:PRINT "This program requires the ASYNC COMM ADAPTER.":END
  50. 9030 IFF ERR = 24 THEN LOCATE 1,1,1:PRINT "A DEVICE TIMEOUT error has occurred. Check modem and press ENTER when ready.";
  51. 9031 DV$=INKEY$:IF DV$ = "" THEN GOTO 9031
  52. 9032 IF LEN(DV$) < 2 THEN RESUME 100
  53. 9035 IF ASC(MID$(DV$,2,1)) = 68 THEN GOTO 10000 ELSE RESUME 100
  54. 9040 IF ERR = 61 THEN PRINT:COLOR 0,7:PRINT "*** disk full -- file closed ***";:COLOR 7,0:PRINT:DISK = FALSE:DF$=" ":GOSUB 13000:RESUME NEXT
  55. 9050 RESUME
  56. 10000 'exit routine
  57. 10010 CLOSE
  58. 10020 SYSTEM
  59. 11000 'function key routine
  60. 11020 FK = ASC(MID$(B$,2,1))
  61. 11030 IF FK = 68 THEN GOTO 10000
  62. 11040 IF FK = 59 THEN DISK = TRUE:DF$="D":GOSUB 13000
  63. 11050 IF FK = 60 THEN DISK = FALSE:DF$=" ":GOSUB 13000
  64. 11060 GOTO 310
  65. 12000 'initialization sequence
  66. 12015 CLS
  67. 12020 LOCATE 1,1,1
  68. 12030 PRINT TAB(17) "TERMINAL PROGRAM WITH DISK SAVE OPTION Ver. 1.7"
  69. 12040 PRINT:PRINT
  70. 12050 PRINT "To begin saving received data to disk - press F1"
  71. 12060 PRINT
  72. 12070 PRINT "To stop saving received data to disk - press F2"
  73. 12080 PRINT
  74. 12090 PRINT "To end program and return to DOS    - press F10
  75. 12100 PRINT:PRINT
  76. 12103 PRINT "A file will be opened to save received"
  77. 12104 PRINT "data under the name 'OUTFILE.TXT."
  78. 12105 PRINT:PRINT
  79. 12110 PRINT "Press ENTER to begin.";
  80. 12112 DV$=INKEY$:IF DV$="" THEN GOTO 12112
  81. 12115 IF LEN(DV$) < 2 THEN GOTO 12120
  82. 12117 IF ASC(MID$(DV$,2,1)) = 68 THEN GOTO 10000 ELSE GOTO 12120
  83. 12120 CLS
  84. 12130 LOCATE 25,1,0:COLOR 0,7:PRINT TAB(5)"F1 = SAVE TO DISK    F2 = STOP SAVE TO DISK    F10 = QUIT PROGRAM  ";:COLOR 7,0
  85. 12140 LOCATE 1,1,1
  86. 12150 RETURN
  87. 13000 'disk save signal on screen routine
  88. 13020 RC = CSRLIN 'record current line
  89. 13030 CC = POS(0) 'record current column
  90. 13040 LOCATE 25,78
  91. 13050 PRINT DF$
  92. 13060 LOCATE RC,CC 'restore postion of cursor
  93. 13070 RETURN
  94.